package com.bank.backend.service;

import com.bank.backend.model.dto.CardCreateDTO;
import com.bank.backend.model.dto.CardPasswordUpdateDTO;
import com.bank.backend.model.entity.Card;
import com.bank.backend.model.vo.CardVO;
import com.bank.backend.model.vo.UserVO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bank.backend.result.PageResult;
import com.bank.backend.model.dto.CardQueryDTO;

/**
 * 银行卡管理服务接口
 */
public interface CardManageService extends IService<Card> {

    /**
     * 创建银行卡
     * @param cardCreateDTO 银行卡创建DTO
     * @return 银行卡创建响应
     */
    void createCard(CardCreateDTO cardCreateDTO);

    /**
     * 根据银行卡号查询银行卡信息
     * @param cardId 银行卡号
     * @return 银行卡信息
     */
    CardVO getCardByCardId(String cardId);

    /**
     * 修改银行卡挂失状态
     */
    void updateReportLossStatus(String cardId, Integer isReportLoss);

    /**
     * 修改银行卡密码
     * @param passwordUpdateDTO 密码修改DTO
     */
    void updateCardPassword(CardPasswordUpdateDTO passwordUpdateDTO);

    /**
     * 根据身份证号查询客户信息
     * @param pid 身份证号
     * @return 用户VO
     */
    UserVO getCustomerInfoByPid(String pid);

    /**
     * 分页查询银行卡列表
     */
    PageResult<CardVO> pageCardList(Integer page, Integer size, Integer userId, String cardId, Integer isReportLoss);

    /**
     * 分页查询银行卡信息（多条件筛选）
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResult<CardVO> pageList(CardQueryDTO queryDTO);

    /**
     * 分页查询银行卡信息（使用DTO）
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResult<CardVO> pageCardList(CardQueryDTO queryDTO);

    /**
     * 删除银行卡
     * @param cardId 银行卡号
     * @return 删除结果信息
     */
    String removeCard(String cardId);
} 